Groovy তে Concurrency বলতে বোঝায় একাধিক কাজ বা প্রক্রিয়া একই সময়ে সম্পন্ন করার প্রক্রিয়া। Concurrency ব্যবহার করে প্রোগ্রামগুলিকে আরও দক্ষ এবং দ্রুত করা যায়, বিশেষত যেখানে একাধিক কাজ সমান্তরালে সম্পাদন করা হয়। Groovy তে Concurrency ব্যবহারের জন্য থ্রেডিং, GPars
লাইব্রেরি, এবং অন্যান্য Concurrency ইউটিলিটি রয়েছে যা Java এর Concurrency টুলগুলির উপর ভিত্তি করে কাজ করে।
Groovy তে Concurrency ব্যবহারের প্রধান পদ্ধতিগুলি হল:
Groovy তে থ্রেড তৈরি করা খুবই সহজ। Thread
ক্লাস ব্যবহার করে নতুন থ্রেড তৈরি করা যায় এবং Concurrency অর্জন করা সম্ভব।
def task1 = new Thread({
println "Task 1 is running"
sleep(1000)
println "Task 1 completed"
})
def task2 = new Thread({
println "Task 2 is running"
sleep(500)
println "Task 2 completed"
})
task1.start()
task2.start()
এখানে task1
এবং task2
নামে দুটি থ্রেড তৈরি করা হয়েছে এবং start()
মেথডের মাধ্যমে তাদের সমান্তরালে চালানো হচ্ছে।
join
মেথডtask1.join()
task2.join()
println "Both tasks are completed."
join
মেথড ব্যবহার করে একটি থ্রেডের কাজ শেষ হওয়ার জন্য অপেক্ষা করা যায়।
ExecutorService
হলো Java এর একটি Concurrency ফ্রেমওয়ার্ক, যা Groovy তে ব্যবহার করা যায়। এটি থ্রেড পুল ম্যানেজমেন্ট সহজ করে এবং কাস্টম থ্রেড পুল তৈরি করা যায়।
import java.util.concurrent.Executors
def executorService = Executors.newFixedThreadPool(2)
def task1 = {
println "Task 1 is running"
sleep(1000)
println "Task 1 completed"
}
def task2 = {
println "Task 2 is running"
sleep(500)
println "Task 2 completed"
}
executorService.submit(task1 as Runnable)
executorService.submit(task2 as Runnable)
executorService.shutdown()
এখানে Executors.newFixedThreadPool(2)
দিয়ে দুটি থ্রেড নিয়ে একটি থ্রেড পুল তৈরি করা হয়েছে এবং submit()
মেথড ব্যবহার করে কাজ জমা দেওয়া হয়েছে।
Groovy তে GPars লাইব্রেরি Concurrency এবং Parallelism কাজকে আরও সহজ করে তোলে। এটি Actor Model, Dataflow, এবং Parallel Collections সমর্থন করে, যা Concurrency পরিচালনার জন্য অনেক বেশি কার্যকর।
ParallelCollection
ব্যবহার করে Concurrency@Grab(group='org.codehaus.gpars', module='gpars', version='1.2.1')
import groovyx.gpars.GParsPool
GParsPool.withPool {
[1, 2, 3, 4, 5].eachParallel { number ->
println "Processing number: $number"
sleep(500)
}
}
println "All tasks completed."
এখানে eachParallel
মেথড ব্যবহার করে একটি লিস্টের প্রতিটি আইটেম সমান্তরালে প্রক্রিয়াকরণ করা হচ্ছে।
@Grab(group='org.codehaus.gpars', module='gpars', version='1.2.1')
import groovyx.gpars.actor.DefaultActor
class SimpleActor extends DefaultActor {
void act() {
loop {
react { message ->
println "Received message: $message"
}
}
}
}
def actor = new SimpleActor()
actor.start()
actor << "Hello, Actor!"
actor << "Another message"
এখানে SimpleActor
নামে একটি Actor তৈরি করা হয়েছে, যা বার্তা প্রাপ্তির জন্য react
মেথড ব্যবহার করে।
Groovy তে Concurrency ব্যবহারের মাধ্যমে সমান্তরালে কাজ করার প্রক্রিয়া সহজ ও কার্যকরী হয়। Groovy তে Concurrency এর জন্য Thread API, ExecutorService, এবং GPars লাইব্রেরি রয়েছে, যা বিভিন্ন প্রয়োজন অনুযায়ী Concurrency পরিচালনা করতে সহায়তা করে। GPars লাইব্রেরি Actor Model, Parallel Collections ইত্যাদি সমর্থন করে যা সমান্তরালে কাজ করার জন্য একটি উন্নত পদ্ধতি প্রদান করে।
common.read_more